1. Field of the Invention
This invention is directed to a code generator, in general, and to a code generator which produces and uses a bent sequence code, in particular.
2. Prior Art
There are many known methods and applications for producing and using code signals. Many of these methods and applications are related to security considerations. Thus, secure transmissions are highly necessary. On the other hand, because of ongoing countermeasures, the types of secure transmissions are always being evaluated and new codes and code formats are being devised.
These codes and code formats include many applications. One such application is referred to as "spread spectrum". Spread Spectrum is a technique of processing a signal which occupies a certain bandwidth of the spectrum in order to spread its energy over a wider region of the spectrum.
There are several reasons for using this technique.
1. For jamming protection. When the energy of the transmitted signal is spread over a wide region of the spectrum, the receiver of the signal picks up what was transmitted along with any interference. However, the receiver also has signal information which it has about the method and 1 or means which was used to spread the signal. The receiver uses this information and despreads the signal. In other words, the receiver uses a code which is called a PN code (a pseudo-noise code) to despread the signal and collapse the spectrum back to the natural bandwidth which it would have occupied without the spreading. In so doing, it spreads the interference and its energy over a wider bandwidth. The receiver then looks at the natural bandwidth which the data would have occupied. As a result, very little of the interference energy is left in the natural bandwidth because the interference signal has been spread as well.
2. To make signals more covert. When the signal energy is spread over a wider bandwidth the signal energy is lower at any given point in the spectrum. In other words, a high concentration of energy which is spread over a wider range produces a signal which is hidden down in the noise more easily and is, therefore, harder to detect. Thus, in addition to "covertness" (i.e., detection difficulty), the data have now been encoded by a certain spread code.
3. For ranging. This is, typically, used is in deep space communications, radar and the like, in order to determine how far away things are.
There are many ways to spread a spectrum. One of the most common and most useful is called "direct sequence" in which the data, whether some type of voice signal or bits (e.g. 1's and 0's) that contain some type of information, are multiplied by a PN code (a pseudo-noise code). The PN code is a code of 1's and 0's. The shortest duration of time that the code remains a 1 or a 0 is called a "chip time". The 1's and O's that comprise the data are called bits, and the shortest duration during which the bit remains constant is called a bit time. In using this PN code, it is necessary to multiply the bits by the chips. The chips are of much shorter duration than are the bits. For example, if a bit is a millisecond in duration, a chip might be a microsecond. Thus, if the PN code remains a 1 for one microsecond, it has the option of going from a 1 to 0 or it can remain a 1 for another microsecond. However, the probability is about 1/2 that the bit will switch over to 0. What makes the code especially effective is that the chips are approximately random. Thus, to a third party observer, not privy to the code sequence that the transmitter and the receiver have, these 1's and 0's appear random. Thus, the designation of pseudo-noise codes.
One means of making a PN code appear really random is by using an m-sequence (i.e., maximal sequence). This is accomplished by means of a feedback shift register in which the output of the shift register (a 1 or a 0) is fed back into the shift register at certain locations. This technique is known in the art.
One example is described in copending application Ser. No. 626,127 to R.L. Currie, entitled HIGH SPEED M-SEQUENCE GENERATOR AND DECODER CIRCUIT , filed on June 29, 1984 and assigned by the common assignee. The locations are determined by what is called an irreducible polynomial over a Galois field. Also, the output is usually shifted or added in modulo 2 type arithmetic or using an exclusive OR type logic. The PN code comprises a sequence which is periodic and repeats. Thus, with a sequence length of 1024, 4096 or even longer, given any 2m code elements, where m is the length of the shift register of those consecutive elements of the code in a row, one can determine what the tap hookups would be and break the codes essentially using the Massey algorithm, primarily because the complexity is linear.
Another problem with the conventional m-sequence approach is that different PN codes require that the feedback taps be re-arranged. However, only certain arrangements will yield an m-sequence. In some cases it may be very difficult because there is essentially an exclusive OR gate on each tap in the shift register. Thus, the knowledge of exactly which sets of taps will work would have to be stored and transmitted in this system.
There are advantages of the bent sequence generator.
1. Complexity. It is very complex. That is, the number of chips required to decode the sequence is much larger than in the m-sequence code. Some computer simulations show that the number of chips required to break the code may be 100's of times larger than that required for normal m-sequence. Because it has high complexity, the bent sequence code is very difficult to break.
2. Ease of code change in the hardware. As disclosed herein, it is very easy to switch from one code to a different code of the same length merely by changing switch settings which can be used on some apparatus. Conversely, in a VLSI embodiment, the settings can be controlled by applying inputs to the chip. Thus, bent sequences are very versatile and many codes can be easily generated from the same equipment without any modification of equipment except changing switch settings.
3. Low cross-correlation. The bent sequence codes have a 3-valued auto-correlation function which is better by a factor of .sqroot.2 than ordinary gold codes.
Probably, the only disadvantage with bent sequence codes is that the hardware complexity is greater. That is, it requires many more chips than building an m-sequence code.